A continuous media file server is designed to serve continuous data streams, such as audio and video data streams, at a constant rate to multiple clients. As an example, a file server might supply digital data streams in the 1-10 megabits-per-second range to thousands of clients simultaneously.
A continuous media file server developed by Microsoft Corporation is based on a distributed architecture in which the data files are distributed across numerous data servers and storage disks. More particularly, the data files are striped across all of the storage disks and all of the data servers on the system. This striping arrangement helps avoid disproportionate use of storage disks and data servers in the likely event that some content is more popular than others. For example, the top ten percent of movies ordered by popularity might garner 70% of the load, while the remaining 90% of the content attracts only 30% of the viewers. Without striping across all disks and servers, the system might overburden the disks and data servers holding popular content while leaving other disks and data servers underutilized.
Because all of the data files are stored on all of the disks, the pattern in which the data files are striped depends on the number of disks and the number of data servers in the file server. As a result, adding or removing storage disks or data servers is not a simple task. In general, changing the number of disks in the file server can result in having to move nearly all of the file data from one disk to another or from one data server to another. For example, consider a file server having ten data servers, each with one storage disk, which holds one data file having a length of 1000 blocks. The first block of the file is on disk 0, the next block is on disk 1, and so forth until the 10.sup.th block is stored on disk 9. The 11.sup.th block is then stored on disk 0, the 12.sup.th block on disk 1, and so forth.
Now, suppose the operator adds a new data server with another disk to the file server. This increases the capacity of the file server by one disk to a total of 11 disks. Assuming that the data file still has its first block on disk 0, the file will need to be reconfigured so that the 11.sup.th block is now stored on the new eleventh disk rather than wrapping to the old first disk 0, where it formerly resided. Similarly, the 12.sup.th block will have to move from disk 1 to disk 0, and so forth throughout the length of the file. Removing data servers or disks presents a similar set of problems.
The inventors have developed a way to reconfigure the file server in an efficient manner following a change in system capacity.